package coherence;
import java.util.List;

import coherence.multiarray.MultiArray;



public class CoherenceInputs {

	//structures by cross-section representation
	
	public MultiArray<MultiArray<Float>> altruisms;				//altruism that each cross-section
														//has for every other cross-section
	public MultiArray<MultiArray<Float>> powerByCrossSection;	//power for each cross-section
	public MultiArray<MultiArray<Float>> populationByCrossSection;	//power for each cross-section	
	public List<List<int []>> partition;						//the partition along which conflict occurred
	
	//these are structures that do not contain the m-dimensional structure of a population
	//they do not treat coalition elements as cross-sections but as abstract agents
	
	public float[][] theta_i_j;		//resource allocation at the coalition level
	public float[][] v_i_j;			//state of the world variable drawn from U[0,1]
	public float[][] psi_i_j;			//a-priori probability of i winning over j
	public boolean[][] won_i_j;			//did i beat j?	
	
	//these are "structural variables"
	
	public float lambda = -1;
	public float c = -1;
	public float I = -1;
	public float epsilon = -1;	
	
	//these variables are not inputs, but are derived from the inputs
	
	//public float[][][] tau_i_j_n;		//resource allocation for each agent in a coalition
										//against every other coalition	
	//int numCoalitions;				//number of coalition; get this from partition
	//float[] sigma_i;					//population by coalition; get this from partition and powerByCrossSection
	//int[] coalitionSizes;				//size of each coalition; get this from partition
	//float[][] beta_i_j;				//altruism values in flattened out form for each 
										//category for every other category within the attribute 
										//along which coalition formation occurred
	//float[] pi_i;						//power of a coalition; get this from populationByCrossSection
										//and partition
	//float[][][] phi_i_j_k;			//individual power endowment for each agent within a coalition
										//get this from powerByCrossSection and partition
	
	
	public boolean validate(){
		return(altruisms!= null && 
			powerByCrossSection != null &&
			partition != null &&
			lambda != -1 && c != -1 && I != -1 && epsilon != -1 &&
			theta_i_j != null &&
			v_i_j != null && psi_i_j != null	
		);
	}
	
}
